<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>编辑博客</title>
    <style type="text/css">
      body {
        margin: 0 20px;
        line-height: 1;
      }
      a {
        text-decoration-line: none;
      }
      .title-wrapper {
        margin-bottom: 10px;
      }
      .title-wrapper input {
        width: 300px;
      }
      .content-wrapper textarea {
        width: 300px;
        height: 150px;
      }
    </style>
  </head>
  <body>
    <h1 style="border-bottom: 1px solid #ccc; padding-bottom: 10px;">
      编辑博客
    </h1>
    <div>
      <div class="title-wrapper">
        <input id="text-title" />
      </div>
      <div class="content-wrapper">
        <textarea id="text-content"></textarea>
      </div>
      <div>
        <button id="btn-update">保存</button>
      </div>
    </div>

    <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.js"></script>
    <script>
      // 发送 get 请求
      function get(url) {
        return $.get(url);
      }

      // 发送 post 请求
      function post(url, data = {}) {
        return $.ajax({
          type: 'post',
          url,
          data: JSON.stringify(data),
          contentType: 'application/json'
        });
      }

      // 获取 url 参数
      function getUrlParams() {
        let paramStr = location.href.split('?')[1] || '';
        paramStr = paramStr.split('#')[0];
        const result = {};
        paramStr.split('&').forEach(itemStr => {
          const arr = itemStr.split('=');
          const key = arr[0];
          const val = arr[1];
          result[key] = val;
        });
        return result;
      }

      // 获取 dom 元素
      const $textTitle = $('#text-title');
      const $textContent = $('#text-content');
      const $btnUpdate = $('#btn-update');

      // 获取博客内容
      const urlParams = getUrlParams();
      const url = '/api/blog/detail?id=' + urlParams.id;
      get(url).then(res => {
        if (res.code !== 0) {
          alert('操作错误');
          return;
        }

        // 显示数据
        const data = res.data || {};
        $textTitle.val(data.title);
        $textContent.val(data.content);
        $btnUpdate.attr('data-id', data.id);
      });

      // 提交修改内容
      $btnUpdate.click(function() {
        const $this = $(this);
        const id = $this.attr('data-id');
        const title = $textTitle.val();
        const content = $textContent.val();

        const url = '/api/blog/update?id=' + id;
        const data = {
          title,
          content
        };
        post(url, data).then(res => {
          if (res.code !== 0) {
            alert('操作错误');
            return;
          }
          alert('更新成功');
          location.href = '/admin.html';
        });
      });
    </script>
  </body>
</html>
